package com.link.base.tencent.corpwx.addressbook.service;

import com.link.base.tencent.corpwx.addressbook.model.User;
import com.link.core.basic.service.BasicService;

import java.util.LinkedHashMap;
import java.util.List;

/**
 * 企业微信 - 用户服务 - API实现
 *
 * @author liying
 * @date 2019/2/21
 */
public interface AddressBookUserService extends BasicService<User> {

    /**
     * userId 转 openId
     *
     * @author liying
     * @date 2019/2/21
     * @param userId  用户id
     * @param agentId 应用id
     * @return
     * @throws Exception
     */
    String transformOpenId(String userId, int agentId) throws Exception;
    
    /** 
    * 异步批量更新通讯录
    * @author 李宗庭
    * @param list 需导入的数据List
    * @param titleMap 需要导入的列标题 key 是当前对象的field value是当前列的显示值
    * @param agentId 应用id
    * @param totalFlag 是否是全量导入，true表示全量，false表示增量
    * @return 返回jobId
    * @date 2019/3/7
    */
    String batchUpdateUsers(List list, LinkedHashMap titleMap, String agentId, Boolean totalFlag) throws Exception;

    /**
    * 删除企业微信通讯录中的用户
    * @author 李宗庭
    * @param userId 用户id
    * @param agentId 应用id
    * @date 2019/3/18
    */
    void deleteUserById(String userId, String agentId) throws Exception;

    /**
     * 添加企业微信通讯录中的用户
     * @author 李宗庭
     * @param user 用户数据
     * @param agentId 应用id
     * @date 2019/3/18
     */
    void addUser(User user, String agentId) throws Exception;

    /**
     * 更新企业微信通讯录中的用户
     * @author 李宗庭
     * @param user 用户数据
     * @param agentId 应用id
     * @date 2019/3/18
     */
    void updateUser(User user, String agentId) throws Exception;

    /**
     * 同步用户信息到企业微信通讯录中
     * @author 李宗庭
     * @param user 用户数据
     * @param agentId 应用id
     * @date 2019/3/18
     */
    void synUser(User user, String agentId) throws Exception;
}
